Под портом обычно понимается интерфейс к внешним устройствам. Следует различать порт – логическое устройство операционной системы (например, специальные файлы) и порт – физическое устройство.
Параллельный, последовательный и игровой порты – это наиболее распространенные порты ввода-вывода. В некоторых портативных компьютерах может не быть игрового порта, но параллельный и последовательный входят в стандартную комплектацию для всех типов ПК.
Изначально каждый из этих портов разрабатывался для определенного
применения. Параллельные предназначались для соединения компьютеров с
принтерами, последовательные – для подключения принтеров, модемов и мыши.
Однако они могут использоваться и для других приложений, связанных с
сопряжением компьютера с внешними устройствами. Периферийные устройства,
созданные для этих портов, легко подключаются к IBM РС-совместимому компьютеру.
Принципиальные схемы отличаются мобильностью и могут применяться для решения
проблем сопряжения с любым оборудованием, которое оснащено указанными портами.
Порт Centronic, или параллельный,
– это промышленный стандарт для подсоединения принтеров к компьютеру. Компьютер
имеет, по крайней мере, один такой порт, встроенный в материнскую плату (плату,
на которой располагаются все основные элементы) или представляющий собой отдельную
интерфейсную карту ввода-вывода. Вывод порта имеет 25-контактную розетку D-типа
(рис. 1). При подсоединении устройств к этому порту необходимо учитывать
максимальную длину кабеля между ними – не более 5 метров (имеется в виду
стандартный кабель для присоединения принтера).
Рис. 1. Цоколёвка параллельного порта LPT1 (тёмными обозначены контакты, с помощью которых может осуществляться передача данных от компьютера). |
Отдельные контакты параллельного порта предназначены для различных
целей: одни – для ввода, другие – для вывода данных. Назначение каждого вывода
представлено в таблице 1.
Таблица
1. Назначение контактов разъёма параллельного порта. |
|||
Номер контакта на компьютере |
Направление
(относительно ПК) |
Наименование |
Назначение |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18..25 |
Выход Выход Выход Выход Выход Выход Выход Выход Выход Вход Вход Вход Вход Выход Вход Выход Выход |
DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 BUSY PE SLCT GND |
Строб данных Бит данных 0 Бит данных 1 Бит данных 2 Бит данных 3 Бит данных 6 Бит данных 7 Подтверждение приёма данных, готовность
принтера Подтверждение занятости принтера Нет бумаги Принтер подключен к линии Автоматический перевод строки после
возврата каретки Ошибка в принтере Установка параметров по умолчанию Выбор принтера Витая пара, соединённая с землёй |
Для осуществления доступа к данным порта необходимо считывать его
значения из памяти по определённому адресу, что можно осуществить из любого
языка программирования, взаимодействующего с операционной системой (например,
Паскаль, Си).
Базовые адреса порта LPT1, по которым можно к нему обратиться – 956 (3BCh*) или 888 (378h).
Базовый
адрес для LPT1 зависит от конфигурации оборудования компьютера. Существует два способа
получения базового адреса: проверка конфигурации оборудования вашего компьютера
или нахождение адреса непосредственно из пользовательских программ с помощью
средств, предлагаемых базовой системой ввода-вывода (BIOS)
компьютера. При включении или перезагрузке компьютера BIOS проверяет наличие параллельных
портов. Если они обнаруживаются, их базовые адреса (двухбайтовые слова**) помещаются в определенные ячейки
памяти ОЗУ (оперативного запоминающего устройства). Для LPT1 это
ячейки 0000h:0408h*** и 0000h:0409h.
Первая содержит младший, вторая – старший байт адреса. Базовый адрес LPT1
можно получить, считав содержимое этих ячеек. Кроме того, используется еще одна
ячейка памяти: 0000:4011h. Она содержит сведения об
общем количестве параллельных портов, установленных на компьютере. Эта
информация хранится в битах 6 и 7:
бит
7=0, бит 6=0 параллельные
порты не установлены,
бит
7=0, бит 6=1 установлен
один параллельный порт,
бит
7=1, бит 6=0 установлено
два параллельных порта,
бит
7=1, бит 6=1 установлено
три параллельных порта.
Таким образом, считав из
вышеуказанной ячейки памяти адрес порта, можно осуществлять дальнейшее
взаимодействие с ним.
* «h» – обозначает, что число записано в шестнадцатеричной системе.
** слово – единица информации; размер зависит от разрядности процессора (для 16 разрядных – 2 байта).
*** XXXXh:XXXXh – обозначение адреса «сегмент-смещение» (у 16-рязрядных компьютеров).